//package com.woniuxy.carrental.service.impl;
//
//import com.woniuxy.carrental.entity.Emp;
//import com.woniuxy.carrental.entity.SysToken;
//import com.woniuxy.carrental.mapper.EmpMapper;
//import com.woniuxy.carrental.mapper.SysTokenMapper;
//import com.woniuxy.carrental.service.ShiroService;
//import com.woniuxy.carrental.shiro.TokenGenerator;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.time.LocalDateTime;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @author author
// * @create 2021-10-12 18:49
// */
//@Service
//public class ShiroServiceImpl implements ShiroService {
//
//    @Autowired
//    private EmpMapper empMapper;
//    @Autowired
//    private SysTokenMapper sysTokenMapper;
//
//
//    @Override
//    public Emp findEmpByname(String empAcc) {
//        Emp emp = empMapper.selectEmpByname(empAcc);
//        return emp;
//    }
//
//    //12小时后过期
//    private final static int EXPIRE = 3600 * 12;
//
//    @Override
//    /**
//     * 生成一个token
//     *@param  [userId]
//     *@return Result
//     */
//    public Map<String, Object> createToken(Integer empid) {
//        Map<String, Object> result = new HashMap<>();
//        //生成一个token
//        String token = TokenGenerator.generateValue();
//        //当前时间
//        LocalDateTime now = LocalDateTime.now();
//        //过期时间
//        LocalDateTime expireTime = now.plusHours(EXPIRE);
//        //判断是否生成过token
//        SysToken tokenEntity = sysTokenMapper.findByEmpid(empid);
//        if (tokenEntity == null) {
//            tokenEntity = new SysToken();
//            tokenEntity.setEmpid(empid);
//            //保存token
//            tokenEntity.setToken(token);
//            tokenEntity.setUpdateTime(now);
//            tokenEntity.setExpireTime(expireTime);
//        } else {
//            //更新token
//            tokenEntity.setToken(token);
//            tokenEntity.setUpdateTime(now);
//            tokenEntity.setExpireTime(expireTime);
//        }
//        result.put("token", token);
//        result.put("expire", EXPIRE);
//        return result;
//    }
//
//    /**
//     * 更新数据库的token，使前端拥有的token失效
//     * 防止黑客利用token搞事情
//     *
//     * @param token
//     */
//    @Override
//    public void logout(String token) {
//        SysToken byToken = findByToken(token);
//        //生成一个token
//        token = TokenGenerator.generateValue();
//        //修改token
//        byToken.setToken(token);
//        //使前端获取到的token失效
//        sysTokenMapper.save(byToken);
//    }
//
//    @Override
//    public SysToken findByToken(String accessToken) {
//        return sysTokenRepository.findByToken(accessToken);
//
//    }
//
//    @Override
//    public User findByUserId(Integer userId) {
//        return userRepository.findByUserId(userId);
//    }
//}
